home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / prog_pas / snpw32.zip / SNAP_P.DOC < prev    next >
Text File  |  1994-05-20  |  35KB  |  925 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.            
  8.            
  9.            
  10.            
  11.            
  12.            
  13.            
  14.            
  15.            
  16.            
  17.            
  18.            
  19.                                            
  20.                                        SNAP_P
  21.                                            
  22.                             The Pascal Source Reformatter
  23.                                          for
  24.                                    DOS and Windows
  25.                                            
  26.           COPYRIGHT⌐ 1992, 1993, 1994 JAMES L. ALLISON ALL RIGHTS RESERVED
  27.                                            
  28.                                            
  29.                                   James L. Allison
  30.                                            
  31.                                            
  32.                                            
  33.                                            
  34.                                            
  35.                                           
  36.                                    Neptune Systems
  37.                                   1703 Neptune Lane
  38.                                   Houston, TX 77062
  39.                                            
  40.                                  Voice 713-488-5722
  41.                                   FAX 713-486-0375
  42.                          INTERNET: 71565.303@compuserve.com
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.                                    Why Use SNAP_P
  74.                                            
  75.           Rapid evaluation, cost savings and debugging ease are the main
  76.           reasons for using a standard printer.  If you are working with a
  77.           group of programmers, a standard source code format makes
  78.           reading, managing, integrating and maintaining your product far
  79.           less expensive and more reliable.  Everyone can read everyone
  80.           else's code.  Turnover becomes less of a headache.  If you import
  81.           code from outside ( another department, a technical journal or a
  82.           BBS ) the ability to snap that code into your own format is
  83.           critical for evaluation.  If you are working alone a standard
  84.           printer gets all of your source into a format that you will be
  85.           able to read months after you forgot why you wrote it in the
  86.           first place.  If you are in school a standard printer will give
  87.           your reports the professional look that instructors respect.
  88.            
  89.           The biggest advantage is that structural errors in a program
  90.           appear instantly in a listing that has uniform indentation and
  91.           capitalization.  It is far easier to write error-free code when
  92.           you can see what you are doing.  The best debugger is a standard
  93.           printer.
  94.            
  95.                                     About SNAP_P
  96.            
  97.           For safety, SNAP_P will not change the original source file
  98.           unless told to.  Even then, a backup copy will be made first.
  99.           The newly structured source text will be placed in a file with
  100.           the same name as the original and the default extension ".SNP".
  101.           The Resulting formatted code is shown beside the original on your
  102.           screen for easy comparison.  If you like the results and you have
  103.           not told SNAP_P to change the source, you can replace the
  104.           original ".PAS" file with the new file yourself.
  105.            
  106.           SNAP_P reformats a Pascal program by adjusting margins and
  107.           internal spacing, and using standard capitalization for all
  108.           keywords and identifiers.  You may specify capitalization by
  109.           either rules or by table lookup.  If you choose "rules" (rather
  110.           than "table") the standard capitalization is used.  You can
  111.           specify which standards and use different rules for keywords and
  112.           identifiers.  If you choose table lookup an optional dictionary
  113.           of standard capitalization is maintained by SNAP_P.  String
  114.           literals and comments are never changed.  You can protect blocks
  115.           from any adjustment by using the echo mode described later.
  116.            
  117.                                     Installation
  118.                                            
  119.           This is a manual installation procedure.  There is a growing
  120.           dislike of automatic procedures that do strange, unknown things
  121.           to the system.  (Too many times have I had to use a full backup
  122.           tape to get rid of a program I decided not to keep.  I hope you
  123.           feel the same way.)
  124.            
  125.           The distribution disk contains two versions of SNAP_P:  SNAP_PD
  126.           for DOS and SNAP_PW for Windows.  You may use either (or both)
  127.  
  128.  
  129.  
  130.                                       Page - 2
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.           of these of these.  The operation of the two versions is
  140.           virtually identical.  This manual discusses the Windows version,
  141.           with notes where the DOS version differs.
  142.            
  143.           SNAP_P will write several files during normal operation.  The
  144.           capitalization dictionary (SNAP_P.CAP) and the optional settings
  145.           (SNAP_P.INI) will be written to the same directory where the .EXE
  146.           file is placed.  In batch mode SNAP_P will create a scratch file
  147.           and a log file in this directory.  It will also place a file
  148.           containing the registration form in this directory if requested.
  149.           Reformatted files (.SNP) and backup files are written to the
  150.           directory where the original source was found.  If you use both
  151.           the DOS and Windows versions, they should be placed in the same
  152.           directory so the dictionary and preference files will be shared.
  153.           You should create a directory (SNAP_P, or whatever you like) on
  154.           your disk to hold these files.
  155.            
  156.           Copy the SNAP_Px.EXE files to the same directory on your hard
  157.           disk.  If you want to execute from anywhere in the system you
  158.           need to make sure it is in the PATH.
  159.            
  160.           For DOS:
  161.           If you want to use SNAP_P as a tool in a Borland« product, do
  162.           the following:
  163.           1    Start the Borland product
  164.           2    Under the Options|Tools menu select New
  165.           3    On the resulting form enter:
  166.                Title     : ~S~NAP_P
  167.                Program Path   : Enter the full path name of SNAP_P.EXE
  168.                Command Line   : $EDNAME $SAVE ALL
  169.                Hot Keys  : Pick an available Hot Key (optional).
  170.           4    Click OK
  171.            
  172.           For Windows:
  173.           Use Windows Setup|Options|Set Up Applications to create an item
  174.           in a convenient group.  The group containing the compiler and
  175.           workbench is a natural place.
  176.            
  177.                                        Removal
  178.                                            
  179.           If you decide that you don't want to keep SNAP_P on your system,
  180.           delete SNAP_P*.* from the directory where you placed SNAP_Px.EXE.
  181.           If you created a special directory for SNAP_P, just delete the
  182.           whole thing.  If you have changed your PATH or modified any tools
  183.           menus or program groups these will also need to be returned to
  184.           their original state.
  185.                                     Using SNAP_P
  186.                                            
  187.           The command line syntax is: SNAP_Px [[path]filename.ext [ /brs]]
  188.           Example: SNAP_PD myprog.pas
  189.           Example: SNAP_PD myprog.pas /bs
  190.           Example: SNAP_PW
  191.            
  192.  
  193.  
  194.  
  195.  
  196.                                       Page - 3
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.           If the filename is given, SNAP_P opens a window containing that
  206.           file at startup, unless the /b switch is specified.  The /b
  207.           switch indicates batch mode.  There must be a space between the
  208.           filename and the /b switch.  These switches are not case
  209.           sensitive.
  210.            
  211.           The other switches allowed in batch mode are:
  212.           s    Silent: do not show progress during run
  213.           r    Replace existing backup file.  If this is not present, a
  214.           backup copy will not be made if it would overwrite an existing
  215.           backup.  This is for safety.  The first time SNAP_P is used on a
  216.           source file, a backup copy is made.  As you experiment with the
  217.           options, you want to keep the original intact.
  218.            
  219.           In batch mode all options are those that have been specified,
  220.           except that prompting for new words is suppressed.  The original
  221.           source is saved as described below and a FILENAME.SNP file is not
  222.           created.  All messages are placed in SNAP_P.LOG in the SNAP_P
  223.           directory.
  224.            
  225.           The DOS version of SNAP_P is a Turbo Vision(R) application, so
  226.           if you are familiar with the Borland interface you should have no
  227.           problems.  If you use a mouse the interface is standard with
  228.           pull-down  menus, check boxes, radio buttons and text entry
  229.           boxes.  If you prefer a keyboard, press F10 to highlight the menu
  230.           bar and use the arrow and tab keys to move around.  Use the space
  231.           bar to toggle check boxes.  You may also use Alt-?, where ? is
  232.           the highlighted letter on the menu bar.  The status bar at the
  233.           bottom of the screen gives some helpful keystrokes to get you
  234.           started.  (DOS - The number in the lower right corner of the
  235.           screen is the available memory.  Keep an eye on this, especially
  236.           when working with large files.)
  237.            
  238.           Install SNAP_P and start it as described above.
  239.           Open a file using the Open option on the File pull-down menu.
  240.           Set capitalization rules.  The rules stay in effect for each file
  241.           you reformat until explicitly changed.
  242.           Set options to use.  The options stay in effect for each file you
  243.           reformat until explicitly changed.
  244.           Re-format the code.
  245.           You may repeat these steps as needed to achieve the desired
  246.           results.
  247.            
  248.           You should work in the interactive mode until you get a feel for
  249.           what all of the options do, and have established a set that you
  250.           like.
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.                                       Page - 4
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.                              Explanation of Menu Options
  272.                                            
  273.           
  274.            
  275.           The menu bar has five pull-down items.
  276.            
  277.           File:
  278.           Open:     Open a file (directory menu provided)
  279.           Exit:     Exit SNAP_P
  280.            
  281.           Window:
  282.           Tile:     Tile open windows
  283.           Cascade:  Cascade open windows
  284.            
  285.           Control:
  286.           General:            Margins, indentation, etc.
  287.           Spaces:             Space before and after punctuation
  288.           "if" Statements:         if-then-else structure
  289.           Block Structure:         begin-end, case, loop structures
  290.           Capitalization Rules:    Capitalization rules, dictionary use    
  291.           Save Style               Save all options to a file.  The file
  292.           will be in the home                          directory with the
  293.           extension .STY.
  294.           Load Style          Load all options from a file
  295.           Reset to Defaults:       Reset all options to default values
  296.            
  297.           SNAP:
  298.           Reformat Source:    Re-format source in active window
  299.           Replace Original File:   Backup original file, replace with new
  300.           text
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.                                       Page - 5
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.           About:
  338.           Product Support:    Where to get support
  339.           Ombudsman:     ASP contact for help
  340.           Copyright:     Copyright notice
  341.           Registration:  Create a registration form
  342.            
  343.                                  General Dialog Box
  344.           
  345.           Scratch File Extension:  SNAP_P will place the reformatted text
  346.           in a file with the same name as the source, and the given
  347.           extension.  The file will be in the same directory as the
  348.           original.  The purpose of this file is to give you a chance to
  349.           look at the result and compile it to make sure everything is OK.
  350.           Backup Extension Char:  If you replace the original file, SNAP_P
  351.           will make a backup copy of the original in a file with the same
  352.           name as the source.  The extension will be formed by replacing
  353.           the first character of the source extension with the given
  354.           character.  For example, PROG.PAS will be saved as PROG.~AS.  The
  355.           backup file will be placed in the same directory as the original.
  356.           If a backup already exists, it will not be replaced unless you
  357.           say so.
  358.           Indent Spaces:  indent this many spaces when indent is specified
  359.           Line Wrap Indent:  indent this many more spaces for continuation
  360.           lines
  361.           Minimum Line Length:  stop indenting when lines get this short
  362.           Wrap to Punctuation:  if multiple lines are needed, attempt to
  363.           start the continuation lines after the first one of " ="  ":"
  364.           ":="  "(" on the first line.  If this is not possible, use the
  365.           setting in Line Wrap Indent.
  366.           Blank Line After Wrap:  if continuation lines are needed insert a
  367.           blank line after the last one
  368.           Left Margin:  insert this many spaces before each line
  369.           Right Margin:  last character position used. Note: If a comment
  370.           or literal (or anything else) will not fit between the left and
  371.           right margins the line will be written, ignoring the margin
  372.           settings.
  373.           Break Line:  insert a highly visible comment line at certain
  374.           places in the output.  The line runs from the left to the right
  375.           margin.  Break lines are placed in the following locations:  (1)
  376.           before "implementation", (2) before top level subprograms, (3)
  377.           before unit initialization "begin" statements, (4) before main
  378.           program "begin" statements.  Break lines are not placed before
  379.           subprograms nested inside other subprograms.  This can help
  380.           considerably when reading someone else's code.
  381.           Filler:  fill character used to form a break line.  Note:  Break
  382.           lines are deleted during the parse and inserted during the write.
  383.           A break line is recognized by starting with "(*" and ending with
  384.           "*)" with nothing but fill characters in between.  If you want to
  385.           change the fill character for a file that already contains break
  386.           lines, you must first reformat with break lines turned off to
  387.           remove the old lines, change the fill character, turn break lines
  388.           back on, and finally reformat again.  If there aren't many of
  389.           them you can delete them by hand.
  390.  
  391.  
  392.  
  393.  
  394.                                       Page - 6
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.           Pad "function", etc.:  add blank characters on the right to make
  404.           "function", "procedure", "constructor" and "destructor" all the
  405.           same length.  This is only in effect during an object type
  406.           definition or the interface part of a unit.  This can provide a
  407.           neater appearance in object type definitions.
  408.           Keep Blank Lines:  retain blank lines from the original.  If this
  409.           is in effect all of the options to insert blank lines will be
  410.           ignored.
  411.           UpCase GOTO, EXIT, etc.:  shift all "jumps" to upper case.  These
  412.           are GOTO, EXIT, HALT, BREAK and CONTINUE.  If this box is
  413.           checked, it overrides all other case settings for these words.
  414.           Blank line before "with":  insert a blank line before a "with"
  415.           statement
  416.           Do not reformat interface part of a unit.:  Very often the
  417.           interface to a unit has been carefully hand crafted for
  418.           readability.  It is usually the only part of a unit the end user
  419.           ever sees.  Check this box if you want to leave the interface
  420.           alone.
  421.                                   Spaces Dialog Box
  422.                                           
  423.            
  424.           These control spacing within a line.  Pick the options that you
  425.           prefer.
  426.            
  427.                              'if' Statements Dialog Box
  428.           
  429.            
  430.           There are many differences of opinion about how an "if" statement
  431.           should be written.  The defaults are for a full "comb" structure.
  432.           This provides very readable text, and the program structure is
  433.           obvious at a glance, but many feel that it takes up too much
  434.           space on the page.  Another common pattern is produced by turning
  435.           off all options except for Newline Before "else".
  436.            
  437.           Take for example the following:
  438.            
  439.           function isAlpha(C: char): boolean;
  440.             begin
  441.               if C in ['A' .. 'Z', 'a' .. 'z']
  442.                 then
  443.                   isAlpha := true
  444.                 else
  445.                   isAlpha := false;
  446.             end;
  447.            
  448.           or,
  449.                   if Cp > Length(Line)
  450.                     then
  451.                       begin
  452.                         Block^.Append(Buf);
  453.                         Buf := '';
  454.                         Next_Line;
  455.                       end
  456.                     else
  457.  
  458.  
  459.  
  460.                                       Page - 7
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.                       begin
  470.                         Buf := Buf + Line[Cp];
  471.                         BumpCp;
  472.                       end;
  473.            
  474.           These code fragments show what the default settings will produce.
  475.           The "then" and "else" parts remain indented and aligned, no
  476.           matter how complex the structure.
  477.            
  478.           When you are experimenting with these you may get some unexpected
  479.           results.  In particular if you turn off the Newline after "then"
  480.           or "else", you probably want to turn off the corresponding
  481.           indent.
  482.            
  483.           The Blank Line After option inserts a blank line after the entire
  484.           "if-then-else" structure.  If Keep Blank Lines is checked in the
  485.           General menu, the Blank Line Before/After is ignored.
  486.            
  487.                              Block Structure Dialog Box
  488.           
  489.            
  490.           This menu controls the layout of blocks.  Check the boxes that
  491.           give you the appearance you like.
  492.            
  493.           Indent:  indent the text inside the block
  494.           Blank Line Before:  insert a blank line before the beginning of
  495.           the block
  496.           Blank Line After:  insert a blank line after the block.  Note:
  497.           the blank line is after the block, not after the statement.  For
  498.           example, in a "case" statement the blank line is after the
  499.           corresponding "end", not after the "case".  For a "repeat"
  500.           statement, the blank line is after the "until" line.
  501.            
  502.           If Keep Blank Lines is checked in the General menu, the Blank
  503.           Line Before/After is ignored.  The Blank Line Before/After option
  504.           will never produce two blank lines together.  For example, if you
  505.           check both Before and After for case statements, and your program
  506.           has two case statements together, there will be only one blank
  507.           line between them.
  508.            
  509.           Indenting subprograms is very useful, especially if the file
  510.           contains nested (local) functions or procedures.  Code
  511.           readability is vastly improved in these cases.
  512.            
  513.           Declarations are not blocks in the "block structured" sense of
  514.           the word.  These are best explained by example.
  515.            
  516.           type
  517.             Switch = string[MaxSwitchLength];
  518.             Operation = (CommandLine, Interactive);
  519.            
  520.           const
  521.             OPMode: Operation = Interactive;
  522.            
  523.  
  524.  
  525.  
  526.                                       Page - 8
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.           var
  536.             InLines: PLineCollection;
  537.             OutFile: text;
  538.             LineNo: integer;
  539.            
  540.            
  541.           This segment of code was produced using the default settings for
  542.           declarations.  That is, they have Blank Line Before, Blank Line
  543.           After, and Indent turned on.
  544.            
  545.                            Capitalization Rules Dialog Box
  546.           
  547.            
  548.           Upper:  All upper case  (example: MY_VARIABLE).
  549.           Lower:  All lower case  (example: my_variable).
  550.           Cap:  First letter and any letter immediately following an
  551.           underscore are upper case, others in lower case  (example:
  552.           My_Variable).
  553.           As is:  Do not change.
  554.           Echo first:  Capitalization is copied from the first occurrence
  555.           of a name.  This name is not added to the dictionary.
  556.            
  557.           Use Dictionary:  Use the dictionary for capitalization.  This is
  558.           how you control names such as "mfOKButton" etc.
  559.            
  560.           
  561.            
  562.           Prompt for new words:  If you are using the dictionary and SNAP_P
  563.           encounters an identifier not in the dictionary, you will be
  564.           prompted for the capitalization and the word will be added to the
  565.           dictionary.  If this box is not checked the rules for identifiers
  566.           will be used for new words, and the new words will not be added
  567.           to the dictionary.  This is always turned off during batch
  568.           operation.
  569.            
  570.           Reserve Directives:  Directives (virtual, forward, etc.) are not
  571.           reserved words, but many programmers treat them as such.  Borland
  572.           strongly recommends that directives never be used as identifiers.
  573.           I agree.  Check the box if you want to treat directives as
  574.           reserved words.  If you do not check the box they will be treated
  575.           as identifiers.
  576.            
  577.                                    About Comments
  578.            
  579.           Comments are always difficult in a pretty printer; they follow no
  580.           rules.  SNAP_P handles comments in the following way.  If a
  581.           comment is the first non-blank on a line, it will start a new
  582.           line in the output.  If it is the last non-blank on a line, it
  583.           will end a line in the output.  A single line comment will remain
  584.           a single line comment.  An embedded comment may or may not get
  585.           wrapped to a new line, depending on spacing, indents, etc.
  586.           Multiple line comments have the first and last lines handled
  587.           according to the above rules, while intermediate lines are copied
  588.           to the output.
  589.  
  590.  
  591.  
  592.                                       Page - 9
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.            
  602.                                 About the Dictionary
  603.                                            
  604.           You may want to use table lookup instead of rules for
  605.           capitalization.  For most applications the rules will suffice,
  606.           but there are cases where you need more control.  For example,
  607.           "ReadLn", "cmCancel", "FileName" and so on follow no particular
  608.           rules, but you want a standard appearance.  This is what the
  609.           dictionary is for.  Each word in the source file is capitalized
  610.           according to the dictionary.  When a new word is found, you will
  611.           be prompted for the capitalization if Prompt for New Words has
  612.           been checked.  You cannot change the spelling, only the looks of
  613.           the word.  If you enter just a return (enter), the name will be
  614.           used as is.  The dictionary is kept as a text file named
  615.           SNAP_P.CAP in the directory where you placed the .exe files, so
  616.           you can edit it whenever you like.
  617.            
  618.           The words must be kept in alphabetical order.  The order in the
  619.           dictionary is not case sensitive.  If you need to change the
  620.           looks of a word in the dictionary use any editor to do so, but do
  621.           not change its location.  Do not use a word processor that might
  622.           introduce extra characters into the file.  Use a simple text
  623.           editor instead.  The one you use for source code is OK.
  624.            
  625.                                   Protecting Blocks
  626.            
  627.           There are times when you want to protect a block of code from any
  628.           reorganization.  This is especially true for tabular layout.
  629.           Echo mode turns SNAP_P off entirely.  A {+e} inserted as a
  630.           comment in the source code starts echo mode.  From that point on
  631.           the text is simply copied to the output.  It is not even scanned,
  632.           except to look for a line containing only {-e}, which turns echo
  633.           mode off.  Since echo mode turns off all parsing, echo mode must
  634.           respect the Pascal block and parenthesis structure.  If, for
  635.           example echo mode includes a "begin" but not the matching "end"
  636.           the indent structure will be incorrect.  The {+e} and {-e}
  637.           comments must appear by themselves on a line.  They are not case
  638.           sensitive.
  639.            
  640.           You can protect the interface to a unit by checking the "Do not
  641.           reformat interface part of a unit" box in the General dialog
  642.           under the Control menu.  If this is checked the right margin
  643.           setting will be ignored.
  644.            
  645.           Both left and right margins are ignored in echo mode.
  646.            
  647.                                     Restrictions
  648.            
  649.           SNAP_P assumes the original file will compile.
  650.            
  651.           Tab characters, except in literals, comments and protected blocks
  652.           are deleted.
  653.            
  654.  
  655.  
  656.  
  657.  
  658.                                       Page - 10
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.           Null characters are replaced by blanks except in protected
  668.           blocks.
  669.            
  670.           SNAP_P does not recognize conditional compilation.  If anything
  671.           in a conditional compilation would "break" the block structure,
  672.           echo mode should be used.
  673.            
  674.           Control characters in strings may be written using # or ^
  675.           notation.  SNAP_P recognizes all of the # notation characters,
  676.           but only ['@'..'_', 'a'..z'] (in hex, this is [$40..$5F,
  677.           $61..$7A]) in ^ notation.
  678.            
  679.           Items such as string literals that will not fit between margins
  680.           will be placed on a line by themselves.  Indent and the right
  681.           margin will be ignored for that line.
  682.            
  683.           There is an internal limit of 2048 characters in the output
  684.           buffer.  If a statement exceeds this length the line will be
  685.           written at that point and the buffering will start over.  The
  686.           result will be correct, and will compile correctly, but the looks
  687.           may not be what you would like; the line wrap will look awkward.
  688.           You may want to echo such statements.
  689.            
  690.           You may want to echo "inline" and "asm" blocks.
  691.            
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.                                       Page - 11
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.                                Definition of Shareware
  734.                                            
  735.           Shareware distribution gives users a chance to try software
  736.           before buying it. If you try a Shareware program and continue
  737.           using it, you are expected to register.
  738.           Copyright laws apply to both Shareware and commercial software,
  739.           and the copyright holder retains all rights, with a few specific
  740.           exceptions as stated below. Shareware authors are accomplished
  741.           programmers, just like commercial authors, and the programs are
  742.           of comparable quality. (In both cases, there are good programs
  743.           and bad ones!) The main difference is in the method of
  744.           distribution. The author specifically grants the right to copy
  745.           and distribute the software, either to all and sundry or to a
  746.           specific group. For example, some authors require written
  747.           permission before a commercial disk vendor may copy their
  748.           Shareware.
  749.            
  750.           Shareware is a distribution method, not a type of software. You
  751.           should find software that suits your needs and pocketbook,
  752.           whether it's commercial or Shareware. The Shareware system makes
  753.           fitting your needs easier, because you can try before you buy.
  754.           And because the overhead is low, prices are low also. Shareware
  755.           has the ultimate money-back guarantee -- if you don't use the
  756.           product, you don't pay for it.
  757.            
  758.                                Disclaimer - Agreement
  759.                                            
  760.           Users of SNAP_P must accept this disclaimer of warranty: "SNAP_P
  761.           is supplied as is.  The author disclaims all warranties,
  762.           expressed or implied, including, without limitation, the
  763.           warranties of merchantability and of fitness for any purpose. The
  764.           author assumes no liability for damages, direct or consequential,
  765.           which may result from the use of SNAP_P."
  766.            
  767.           SNAP_P is a "shareware program" and is provided at no charge to
  768.           the user for evaluation.  Feel free to share it with your
  769.           friends, but please do not give it away altered or as part of
  770.           another system.  The essence of "user-supported" software is to
  771.           provide personal computer users with quality software without
  772.           high prices, and yet to provide incentive for programmers to
  773.           continue to develop new products.  If you find this program
  774.           useful and find that you are using SNAP_P and continue to use
  775.           SNAP_P after a reasonable trial period, you must make a
  776.           registration payment of $35.00 to Neptune Systems.
  777.            
  778.           The $35.00 registration fee will license one copy of each of the
  779.           DOS and Windows version for use on any one computer at any one
  780.           time.  You must treat this software just like a book.  A book
  781.           cannot be read by two different persons at the same time.  This
  782.           software may be used by any number of people and may be freely
  783.           moved from one computer location to another, so long as there is
  784.           no possibility of it being used at one location while it's being
  785.           used at another.
  786.            
  787.  
  788.  
  789.  
  790.                                       Page - 12
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.           Commercial users of SNAP_P must register and pay for their copies
  800.           of SNAP_P within 30 days of first use or their license is
  801.           withdrawn. Site-License arrangements may be made by contacting
  802.           Neptune Systems.
  803.            
  804.           Anyone distributing SNAP_P for any kind of remuneration must
  805.           first contact Neptune Systems at the address above for
  806.           authorization. This authorization will be automatically granted
  807.           to distributors recognized by the (ASP) as adhering to its
  808.           guidelines for shareware distributors, and such distributors may
  809.           begin offering SNAP_P immediately (However Neptune Systems must
  810.           still be advised so that the distributor can be kept up-to-date
  811.           with the latest version of SNAP_P.)
  812.            
  813.           You are encouraged to pass a copy of SNAP_P along to your friends
  814.           for evaluation.  Please encourage them to register their copy if
  815.           they find that they can use it.  All registered users will
  816.           receive a copy of the latest version of the SNAP_P system without
  817.           the registration reminder at the beginning and end, and a laser
  818.           printed copy of this manual with screen capture illustrations.
  819.           They will also receive free technical support via U.S. mail,
  820.           CompuServe electronic mail or telephone for a period of six
  821.           months after registration.
  822.            
  823.                                       Ombudsman
  824.                                            
  825.           This program is produced by a member of the Association of
  826.           Shareware Professionals (ASP).  ASP wants to make sure that the
  827.           shareware principle works for you. If you are unable to resolve a
  828.           shareware-related problem with an ASP member by contacting the
  829.           member directly, ASP may be able to help. The ASP Ombudsman can
  830.           help you resolve a dispute or problem with an ASP member, but
  831.           does not provide technical support for members' products.  Please
  832.           write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI
  833.           49442-9427 USA, FAX 616-788-2765 or send a CompuServe message via
  834.           CompuServe Mail to ASP Ombudsman 70007,3536.
  835.            
  836.            
  837.           
  838.            
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.                                       Page - 13
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.            
  866.           Copyright ⌐ 1994 by Neptune Systems.  All rights reserved.  All
  867.           Borland products mentioned are trademarks or registered
  868.           trademarks of Borland International, Inc.  Windows as used in
  869.           this manual refers to the windows system from Microsoft
  870.           Corporation.
  871.            
  872.            Windows, as used in this manual, is a trademark of Microsoft
  873.           Corporation.
  874.            
  875.            Borland International, Inc.
  876.            
  877.            Setting options is explained later in this manual.
  878.            
  879.            Turbo Vision is a trademark of Borland International, Inc.
  880.            
  881.            The illustrations in this manual are from the Windows version.
  882.           The DOS versions are functionally the same.
  883.            
  884.            The DOS version also has a status bar at the bottom of the
  885.           screen.  This defines single keystrokes for Exit, Close, Toggle
  886.           43/50 line mode and Menu.
  887.            
  888.            
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.                                       Page - 14
  923.  
  924.  
  925.